package com.urbanflow.vinci.gui;

import java.awt.BorderLayout;
import java.awt.Font;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import com.urbanflow.vinci.controler.*;

public class Fenetre extends JFrame{
	
	  private JTextArea labelCorps = new JTextArea();
	  private JScrollPane scroll = new JScrollPane(labelCorps);
	  private String messageFenetre;
	  
	  public Fenetre(){
		  
		// Constructeur par defaut
			messageFenetre = "Inconnu";
	  }
	  
		// Constructeur avec des parametres
		
		public Fenetre(String pMessageFenetre) {
			messageFenetre = pMessageFenetre;
		

		// Proprietes generales
	    this.setLocationRelativeTo(null);
	    this.setTitle("Urban Flow - VINCI ENERGIES");
	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    this.setSize(1280, 600);
	    
	    // Affichage de l'horodatage
	    Date horodatage = new Date();
	    String horodatage2 = "\n"+horodatage.toString()+" : ";
	    
	    // Definition des polices d'ecriture
		Font fontCorps = new Font("Arial", Font.ITALIC, 16);

	    // Ajout de la fonction de scroll

	    this.getContentPane().add(scroll, BorderLayout.CENTER);
	    
	    // Texte du corps
	    
	    labelCorps.setFont(fontCorps);
	    
	    String texte = horodatage2+messageFenetre;
	    
        labelCorps.setText(texte);

	    this.setVisible(true);
	    
	    // Conservation des messages dans un fichier log :
	    
	  		String adresseDuFichier = System.getProperty("user.dir") + "/lancement_urban_flow.log";

	  		try
	  		{
	  			/**
	  			 * BufferedWriter a besoin d un FileWriter, 
	  			 * les 2 vont ensemble, on donne comme argument le nom du fichier
	  			 * true signifie qu on ajoute dans le fichier (append), on ne marque pas par dessus 
	  			 
	  			 */
	  			FileWriter fw = new FileWriter(adresseDuFichier, true);
	  			
	  			// le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
	  			BufferedWriter output = new BufferedWriter(fw);
	  			
	  			//on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream)
	  			output.write(texte);
	  			//on peut utiliser plusieurs fois methode write
	  			
	  			output.flush();
	  			//ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter
	  			
	  			output.close();
	  			//et on le ferme
	  			System.out.println("fichier de log écrit");
	  		}
	  		catch(IOException ioe){
	  			System.out.print("Erreur : ");
	  			ioe.printStackTrace();
	  			}
	  }
	  
}

